READ and WRITE simple variables, strings, arrays
READ and WRITE are binary I/O statements.  They read and write data without alteration, interpretation, or conversion.

Strings are written without a length, and neither null terminators nor newline characters are appended.  Only the string data itself is written. If a string is empty, nothing is written. Arrays are handled much like strings.  No length is written, only the array data.

Except for arrays and strings, all variables including those of user-defined composite types, have a known, fixed size.  Reading fixed-size variables from a file is simple. Reading into variables of the same types that were written guarantees correct operation.

Arrays and strings of known size can be written much like fixed-size variables.   Before they are read back correctly, however, the array or string must be sized properly.  Arrays and strings can be sized by DIM and NULL$() in preparation for a READ.

When arrays or strings of unknown size or type must be stored in a binary file, additional information must be written before the data.

For example, when a variable size string is written, an SLONG variable containing the number of elements could be written before the string.  Before the string is read, the number of elements is read into an SLONG variable, which is used in NULL$() to size string appropriately for the read.

For example:

  READ [ifile], n
  a$ = NULL$ (n)
  READ [ifile], a$
'
  READ [ifile], n
  IF (n <= 0) THEN
    DIM a[]
  ELSE
    DIM a[n-1]
    READ [ifile], a[]
  END IF